package top.kaoshanji.p3ch21d;

/**
 * 代码清单-p3ch21d-255页a：场景类
 * @author kaoshanji
 * ^_^
 * create time 2025/3/26 10:46
 */
public class Client {

    public static void main(String[] args) {

        // 创建一个根节点
        Composite root = new Composite();
        root.doSomething();

        // 创建一个树枝构件
        Composite branch = new Composite();

        // 创建一个叶子节点
        Leaf leaf = new Leaf();

        // 建立整体
        root.add(branch);
        branch.add(leaf);
    }

    // 通过递归遍历树
    public static void display(Composite root) {

        for (Component c: root.getChildren()) {
            if (c instanceof Leaf) { // 叶子节点
                c.doSomething();
            } else { // 树叶节点
                display((Composite) c);
            }
        }

    }


}
